package com.ruoyi.framework.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Bean;

/**
 * JS处理Long类型精度丢失问题
 * 在Long长度大于17位时会出现精度丢失的问题。如何避免精度丢失呢？最常用的办法就是将Long类型字段统一转成String类型。
 * 当MyBatisplus的ID使用IdType.ASSIGN_ID（雪花算法）的时候会生成超过17位的数字，这个时候就需要用这个类。
 * 也可以将数据库类型和Bean的类型都设置为字符串，就不会存在上述问题了。
 */
//@Configuration
public class JsonSerializerConfig {
    @Bean
    public ObjectMapper customObjectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }
}
